---
title: Policy period expiration date
summary: Resolves a policy period's expiration date across WCIS and non-WCIS stores.
status: draft
owner: SAIF Documentation Generator
last_reviewed: 2026-08-21
library: SAIF.Business.Policy
reference_type: package
operation_id: op-05-policy-period-expiration-date
trigger: Caller invokes PolicyPeriodExpirationDate
---

# Policy period expiration date

Resolves a policy period's expiration date, unioning the WCIS and non-WCIS policy-period stores.

| Field | Value |
| --- | --- |
| **Operation ID** | op-05-policy-period-expiration-date |
| **Trigger** | Caller invokes `PolicyPeriodExpirationDate` |
| **Inputs** | `IDataPortalInfo`, policy number, period effective date |
| **Outputs** | `Date` |
| **Primary components** | `PolicyInformation.PolicyPeriodExpirationDate` |
| **Entry point** | SAIF.Business.Policy/PolicyInformation.vb |

## Steps

1. Build the same scalar-request scaffold as [Latest policy period effective date](op-04-max-policy-effective-date.md).
2. Assign SQL `SQL.PolicyPeriodExpirationDate` ([SQL-010](../sql/SQL-010-policy-period-expiration-date.md)) — a `UNION` over [POLICY_PERIOD](../database-tables.md#policy_period) and [POLICY_PERIOD_NON_WCIS](../database-tables.md#policy_period_non_wcis) ([BR-POL-010](../business-rules.md#br-pol-010-dual-source-period-date-resolution)).
3. Bind `in_policy_num`, `in_policy_period_eff_date`.
4. Return `CDate(Result)`.

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
	Start(["Caller invokes<br>PolicyPeriodExpirationDate"]) --> A["Build same scalar-request<br>scaffold as Latest policy<br>period effective date"]
	A --> B["Assign SQL.PolicyPeriodExpirationDate<br>— UNION over POLICY_PERIOD and<br>POLICY_PERIOD_NON_WCIS"]
	B --> C["Bind in_policy_num,<br>in_policy_period_eff_date"]
	C --> End(["Return CDate(Result)"])
```

## Failure and edge-case behavior
- A `NULL`/absent result causes `CDate` to throw (unhandled).*

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [SQL catalog](../sql/index.md)
- [Database tables](../database-tables.md)

## Sources
- `SAIF.Business.Policy/PolicyInformation.vb`
